﻿//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////  LIBRERIA: SIMA.CORE                                                                                             ////
////  DESARROLLADO POR JUAN CARLOS VEGA NEIRA                                                                         ////
////  UNIVERSIDAD RICARDO PALMA                                                                                       ////
////  CURSO DE TALLER DE GERENTCIA DE PROYECTOS                                                                       ////
////  SEMESTRE 2010 - II                                                                                              ////
////  SEPTIEMBRE, 2010                                                                                                ////
////  TODOS LOS DERECHOS RESERVADOS                                                                                   ////
////  VERSIÓN v1.0                                                                                                    ////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

using System.Collections.Generic;
using System.ServiceModel;

namespace SIMA.Core.Network.Interface
{
    //[ServiceContract(CallbackContract=typeof(ICallbackEntity<T>))]
    public interface IEntityService<T>
    {
        [OperationContract(IsOneWay=true)]
        void Add(T item);

        [OperationContract(IsOneWay = true)]
        void Remove(T item);

        [OperationContract(IsOneWay = true)]
        void Update(T item, T itemToUpdate);

        [OperationContract(IsOneWay = true)]
        List<T> SelectAll();

        [OperationContract(IsOneWay = true)]
        List<T> SelectCollectionByParm(string parm);

        [OperationContract(IsOneWay = true)]
        T SelectByParm(string parm);
    }

    public interface ICallbackEntity<T>
    {
        [OperationContract(IsOneWay = true)]
        void SendErrorMessage(string error);

        [OperationContract(IsOneWay = true)]
        void Refresh(List<T> updated);
    }
}
